home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / ODF / Found / FWCommon / FWTDstry.h < prev    next >
Encoding:
Text File  |  1996-09-17  |  2.5 KB  |  78 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWTDstry.h
  4. //    Release Version:    $ ODF 2 $
  5. //
  6. //    Copyright:    (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #ifndef FWTDSTRY_H
  11. #define FWTDSTRY_H
  12.  
  13. #ifndef FWDEBUG_H
  14. #include "FWDebug.h"
  15. #endif
  16.  
  17. //========================================================================================
  18. //    class FW_TPrivDestroyer : generic template for destroying singletons
  19. //========================================================================================
  20.  
  21. template<class tDoomed>
  22. class FW_TPrivDestroyer
  23. {
  24. public:
  25.     FW_TPrivDestroyer(tDoomed* doomed = 0);
  26.     ~FW_TPrivDestroyer();
  27.     
  28.     void SetDoomed(tDoomed* doomed) { fDoomed = doomed; }
  29.  
  30. private:
  31.     // prevent copying to avoid double deletion
  32.     FW_TPrivDestroyer(const FW_TPrivDestroyer<tDoomed>& other);
  33.     FW_TPrivDestroyer<tDoomed>& operator=(const FW_TPrivDestroyer<tDoomed>& other);
  34.     
  35. private:
  36.     tDoomed* fDoomed;
  37. };
  38.  
  39. //----------------------------------------------------------------------------------------
  40. //    FW_TPrivDestroyer::FW_TPrivDestroyer
  41. //----------------------------------------------------------------------------------------
  42. template<class tDoomed>
  43. FW_TPrivDestroyer<tDoomed>::FW_TPrivDestroyer(tDoomed* doomed) :
  44.     fDoomed(doomed)
  45. {
  46. }
  47.  
  48. //----------------------------------------------------------------------------------------
  49. //    FW_TPrivDestroyer::FW_TPrivDestroyer
  50. //----------------------------------------------------------------------------------------
  51. template<class tDoomed>
  52. FW_TPrivDestroyer<tDoomed>::FW_TPrivDestroyer(const FW_TPrivDestroyer<tDoomed>& ) 
  53. {
  54.     // Illegal call to FW_TPrivDestroyer copy constructor!
  55.     FW_DEBUGGER();
  56. }
  57.  
  58. //----------------------------------------------------------------------------------------
  59. //    FW_TPrivDestroyer::~FW_TPrivDestroyer
  60. //----------------------------------------------------------------------------------------
  61. template<class tDoomed>
  62. FW_TPrivDestroyer<tDoomed>::~FW_TPrivDestroyer()
  63. {
  64.     delete fDoomed;
  65. }
  66.  
  67. //----------------------------------------------------------------------------------------
  68. //    FW_TPrivDestroyer::operator=
  69. //----------------------------------------------------------------------------------------
  70. template<class tDoomed>
  71. FW_TPrivDestroyer<tDoomed>& FW_TPrivDestroyer<tDoomed>::operator=(const FW_TPrivDestroyer<tDoomed>&)
  72. {
  73.     // Illegal call to FW_TPrivDestroyer assignment operator!
  74.     FW_DEBUGGER();
  75.     return *this;
  76. }
  77.  
  78. #endif